package com.clothing.customization.repository;

import com.clothing.customization.entity.DesignWork;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface DesignWorkRepository extends JpaRepository<DesignWork, Long> {
    
    // 获取最近5条按点赞数排序的设计作品
    List<DesignWork> findTop5ByOrderByLikeCountDesc();
    
    // 根据设计师ID查询设计作品列表
    List<DesignWork> findByDesignerIdOrderByCreateTimeDesc(Long designerId);
    
    // 根据服装类型查询设计作品列表
    List<DesignWork> findByClothingTypeOrderByCreateTimeDesc(String clothingType);
    
    // 根据设计师ID和服装类型查询设计作品列表
    List<DesignWork> findByDesignerIdAndClothingTypeOrderByCreateTimeDesc(Long designerId, String clothingType);
    
    // 根据标题模糊查询设计作品列表
    List<DesignWork> findByTitleContainingOrderByCreateTimeDesc(String title);
    
    // 根据设计师ID和标题模糊查询设计作品列表
    List<DesignWork> findByDesignerIdAndTitleContainingOrderByCreateTimeDesc(Long designerId, String title);
    
    // 统计设计师作品数量
    long countByDesignerId(Long designerId);
    
    // 统计服装类型作品数量
    long countByClothingType(String clothingType);
    
    // 统计设计师各服装类型作品数量
    @Query("SELECT d.clothingType, COUNT(d) FROM DesignWork d WHERE d.designerId = ?1 GROUP BY d.clothingType")
    List<Object[]> countByDesignerIdAndClothingType(Long designerId);
    
    // 根据标签查询设计作品列表
    List<DesignWork> findByTagsContainingOrderByCreateTimeDesc(String tag);
    
    // 根据设计师ID和标签查询设计作品列表
    List<DesignWork> findByDesignerIdAndTagsContainingOrderByCreateTimeDesc(Long designerId, String tag);
    
    // 根据风格查询设计作品列表
    List<DesignWork> findByStyleOrderByCreateTimeDesc(String style);
    
    // 根据设计师ID和风格查询设计作品列表
    List<DesignWork> findByDesignerIdAndStyleOrderByCreateTimeDesc(Long designerId, String style);
} 